"""
homework03 - 用函数实现求两个数的最大公约数和最小公倍数。

写程序的终极原则：高内聚，低耦合。 ---> high cohesion low coupling

设计函数最为重要的原则：单一职责原则（一个函数制作好一件事情） ---> 高度内聚

GCD ---> 欧几里得算法（辗转求余数法）

Author: Administrator
Date: 2024/1/19
"""


def gcd(x: int, y: int) -> int:
    """求最大公约数"""
    while y % x != 0:
        x, y = y % x, x
    return x


def lcm(x: int, y: int) -> int:
    """求最小公倍数"""
    return x * y // gcd(x, y)


print(gcd(27, 15))